home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue31 / survive / Client1A.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1997-11-19  |  3.6 KB  |  151 lines

  1. unit Client1A;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, Db, DBTables;
  8.  
  9. type
  10.   TfrmMain = class(TForm)
  11.     dbMain: TDatabase;
  12.     dsQueryResults: TDataSource;
  13.     grdMatches: TDBGrid;
  14.     memDocument: TDBMemo;
  15.     navMatches: TDBNavigator;
  16.     edtQuery: TEdit;
  17.     Label1: TLabel;
  18.     btnSearch1: TButton;
  19.     lblResults: TLabel;
  20.     qryGetQueryResults: TQuery;
  21.     qryGetSingleRecord: TQuery;
  22.     dsSingleRecord: TDataSource;
  23.     lblDocHeader: TLabel;
  24.     qryGetQueryResultsSpeciesNo: TFloatField;
  25.     qryGetQueryResultsCommon_Name: TStringField;
  26.     qryGetQueryResultsSpeciesName: TStringField;
  27.     btnSearch2: TButton;
  28.     chkViewSQL: TCheckBox;
  29.     memSQL: TMemo;
  30.     radIndex1: TRadioButton;
  31.     radIndex2: TRadioButton;
  32.     procedure btnSearch1Click(Sender: TObject);
  33.     procedure grdMatchesDblClick(Sender: TObject);
  34.     procedure btnSearch2Click(Sender: TObject);
  35.     procedure chkViewSQLClick(Sender: TObject);
  36.     procedure FormCreate(Sender: TObject);
  37.     procedure radIndex1Click(Sender: TObject);
  38.     procedure radIndex2Click(Sender: TObject);
  39.   private
  40.   public
  41.     IndexTable: string;
  42.   end;
  43.  
  44. var
  45.   frmMain: TfrmMain;
  46.  
  47. implementation
  48.  
  49. {$R *.DFM}
  50.  
  51. uses
  52.   BldSQL;
  53.  
  54. procedure TfrmMain.FormCreate(Sender: TObject);
  55. begin
  56.   IndexTable := 'BIOLIFEIDX1';
  57.   with memSQL do begin
  58.     Left := grdMatches.Left;
  59.     Top := grdMatches.Top;
  60.     Width := grdMatches.Width;
  61.     Height := (memDocument.Top - grdMatches.Top) + memDocument.Height;
  62.   end;
  63. end;
  64.  
  65. procedure TfrmMain.chkViewSQLClick(Sender: TObject);
  66. begin
  67.   if chkViewSQL.Checked then begin
  68.     memSQL.Visible := True;
  69.     lblResults.Caption := '&SQL:';
  70.     lblResults.FocusControl := memSQL;
  71.     navMatches.Visible := False;
  72.   end
  73.   else begin
  74.     memSQL.Visible := False;
  75.     lblResults.Caption := '&Results:';
  76.     lblResults.FocusControl := grdMatches;
  77.     navMatches.Visible := True;
  78.   end;
  79. end;
  80.  
  81. procedure TfrmMain.radIndex1Click(Sender: TObject);
  82. begin
  83.   IndexTable := 'BIOLIFEIDX1';
  84.   btnSearch2.Enabled := False;
  85. end;
  86.  
  87. procedure TfrmMain.radIndex2Click(Sender: TObject);
  88. begin
  89.   IndexTable := 'BIOLIFEIDX2';
  90.   btnSearch2.Enabled := True;
  91. end;
  92.  
  93. procedure TfrmMain.btnSearch1Click(Sender: TObject);
  94. begin
  95.   if chkViewSQL.Checked then
  96.     BuildSQL1(edtQuery.Text, IndexTable, memSQL.Lines)
  97.   else with qryGetQueryResults do begin
  98.     DisableControls;
  99.     try
  100.       Close;
  101.       BuildSQL1(edtQuery.Text, IndexTable, SQL);
  102.       Open;
  103.     finally
  104.       EnableControls;
  105.     end;
  106.   end;
  107. end;
  108.  
  109. procedure TfrmMain.btnSearch2Click(Sender: TObject);
  110. var
  111.   Query: string;
  112. begin
  113.   Query := edtQuery.Text;
  114.   if Copy(Query, 1, 1) <> '"' then
  115.     Query := Format('"%s"', [Query]);
  116.  
  117.   if chkViewSQL.Checked then
  118.     BuildSQL2(Query, IndexTable, memSQL.Lines)
  119.   else with qryGetQueryResults do begin
  120.     DisableControls;
  121.     try
  122.       Close;
  123.       BuildSQL2(Query, IndexTable, SQL);
  124.       Open;
  125.     finally
  126.       EnableControls;
  127.     end;
  128.   end;
  129. end;
  130.  
  131. procedure TfrmMain.grdMatchesDblClick(Sender: TObject);
  132. begin
  133.   if not qryGetQueryResults.FieldByName('Species No').IsNull then
  134.     with qryGetSingleRecord do begin
  135.       DisableControls;
  136.       try
  137.         Close;
  138.         ParamByName('SpeciesNo').AsFloat :=
  139.           qryGetQueryResults.FieldByName('Species No').AsFloat;
  140.         Open;
  141.         lblDocHeader.Caption :=
  142.           Format('%s (%s)', [FieldByName('Common_Name').AsString,
  143.                              FieldByName('Species Name').AsString]);
  144.       finally
  145.         EnableControls;
  146.       end;
  147.     end;
  148. end;
  149.  
  150. end.
  151.